/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package bpmlab.shift.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Mikael Lima
 */
@Embeddable
public class Embalagem implements Serializable {
    
    @Column(name = "rotulo")
    private String rotulo;
    @Column(name = "quantidade")
    private int quantidade;
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "data_da_embalagem")
    private Date dataDeEmbalagem;
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "validade")
    private Date validade;
    @ManyToOne
    private Localizacao localEmbalagem;
    @ManyToOne
    private TipoEmbalagem tipoEmbalagem;
    @ManyToOne
    private Aplicacao aplicacaoEmbalagem;

    public Embalagem() {
    }

    public Embalagem(String rotulo, int quantidade, Date dataDeEmbalagem, Date validade) {
        this.rotulo = rotulo;
        this.quantidade = quantidade;
        this.dataDeEmbalagem = dataDeEmbalagem;
        this.validade = validade;
    }

    public String getRotulo() {
        return rotulo;
    }

    public void setRotulo(String rotulo) {
        this.rotulo = rotulo;
    }

    public int getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(int quantidade) {
        this.quantidade = quantidade;
    }

    public Date getDataDeEmbalagem() {
        return dataDeEmbalagem;
    }

    public void setDataDeEmbalagem(Date dataDaEmbalagem) {
        this.dataDeEmbalagem = dataDaEmbalagem;
    }

    public Date getValidade() {
        return validade;
    }

    public void setValidade(Date validade) {
        this.validade = validade;
    }

    public Localizacao getLocalEmbalagem() {
        return localEmbalagem;
    }

    public void setLocalEmbalagem(Localizacao localEmbalagem) {
        this.localEmbalagem = localEmbalagem;
    }

    public TipoEmbalagem getTipoEmbalagem() {
        return tipoEmbalagem;
    }

    public void setTipoEmbalagem(TipoEmbalagem tipoEmbalagem) {
        this.tipoEmbalagem = tipoEmbalagem;
    }

    public Aplicacao getAplicacaoEmbalagem() {
        return aplicacaoEmbalagem;
    }

    public void setAplicacaoEmbalagem(Aplicacao aplicacaoEmbalagem) {
        this.aplicacaoEmbalagem = aplicacaoEmbalagem;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 71 * hash + Objects.hashCode(this.rotulo);
        hash = 71 * hash + this.quantidade;
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Embalagem other = (Embalagem) obj;
        if (!Objects.equals(this.rotulo, other.rotulo)) {
            return false;
        }
        if (this.quantidade != other.quantidade) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Embalagem{" + "rotulo=" + rotulo + ", quantidade=" + quantidade + ", dataDeEmbalagem=" + dataDeEmbalagem + ", validade=" + validade + '}';
    }

}
